const AC_GAME_OBJECTS=[];

export class AcGameObject{
    constructor(){
        AC_GAME_OBJECTS.push(this);
        this.timedelta=0;
        this.has_called_start=false; //记录有没有执行过
    }
    start(){  //只执行一次

    }

    update(){ //除了第一帧之外，每一帧执行一次
          
    }

    on_destroy(){  //删除前执行

    }
    destroy(){
         this.on_destroy();

        for(let i in AC_GAME_OBJECTS)
        {
            const obj=AC_GAME_OBJECTS[i];
        if(obj===this){
            AC_GAME_OBJECTS.splice(i);
            break;
             }
          }
      }
}

let last_timestamp; //上一次执行的时刻
const step = timestrap => {  //timestrap为传入的参数，内容为当前的时刻
  
     for(let obj of AC_GAME_OBJECTS)
     {
        if(!obj.has_called_start){
            obj.has_called_start=true;
            obj.start();
        }
        else{
            obj.timedelta=timestrap-last_timestamp;
            obj.update();
        }
     }
      last_timestamp=timestrap;
      requestAnimationFrame(step)
}

requestAnimationFrame(step)